De Excel a SQL [AUXILIO]


07 de Marzo del 2019

Buenas, pueden decirme kj para que sea sencillo.
o nombre de usuario.

Trabajo para una empresa de venta al mayoreo y menudeo de refacciones automotrices.
Ejerzo el puesto de inventarista. Sin embargo me encuentro a menudo haciendo tablas de excel para mis superiores ya que tengo experiencia en estas y nuestro sistema de ventas carece de ciertas opciones que los superiores desean.

Recientemente me pidieron una tabla donde pudiese separarles ciertas ventas dependiendo de las unidades de negocio tomando en cuenta el costo de cada parte. Las partes estan categorisadas con "lineas" y las facturas no distinguen entre lineas o partes, ya que unas lineas se toman en cuenta como mano de obra.

Toda esta informacion esta en una base de datos la cual yo consulto con este SQL:

 

SELECT 	 	titm_0.sid, tkt_0.inum, tkt_0.type, ct_0.logname, titm_0.line, tkt_0.idate, tkt_0.anum,
 	 	 	titm_0.sell, titm_0.qtysold, titm_0.pcore, tkt_0.subnt, tkt_0.subt, tkt_0.misc,
 	 	 	tkt_0.cornt, tkt_0.cort, tkt_0.tfrght, tkt_0.ttax, titm_0.id, tkt_0.workorder
 
FROM 	 	PACE.PUB.ct ct_0, PACE.PUB.titm titm_0, PACE.PUB.tkt tkt_0
 
	WHERE 		ct_0.sid = titm_0.sid AND ct_0.sid = tkt_0.sid AND ct_0.id = tkt_0.id AND
 	 	 	 	titm_0.sid = tkt_0.sid AND titm_0.tnum = tkt_0.tnum AND
 	 	 	 	((tkt_0.idate>{d '2018-12-31'}))
 
ORDER BY tkt_0.idate DESC

Esa consulta la importo a Excel y sobre esta yo trabajo para generar una tabla dinámica que mis jefes pueden usar para tomar sus decisiones.

Todo perfecto... Pero el problema es que tengo una i7 de 8tava generación y aun así le toma a la pobre computadora actualizar la tabla al rededor de 2 horas. Y aveces el reporte se corrompe y debo volver a hacer todo.

Yo se que se debe a que tengo muchos datos... Pero el verdadero problema esta en que en mi Excel tengo estas formulas:

https://i.imgur.com/nANB9qM.png

Como pueden ver, realmente tengo UN COCHINERO de formulas en diversos campos. Quiero intentar hacer algunas de esas columnas en SQL... Siendo honesto eh estado echándole coco desde hace dos días, y nada viene a mi cabeza. Realmente ya perdí la esperanza de hacer la ultima columna calculada "Tkt" yo le llamo Ticket, pero si pudiese calcular las otras, como la "concatacion de #factura con linea + contar.si.conjunto", el "importe total sin repetir" o la "Unidad de negocio"

En la columna TKT, no solo me sirve para contar cada factura diferente, eso es sencillo, esa columna la necesito por que entre las lineas TDS es prioritario luego FYE, asi que ocupo que el "1" este SOLO en la fila que lleva TDS o FYE si es que en esa factura se vendio un producto cuya linea es TDS o FYE. Es esa la razon del por que TKT esta tan complejo. Siendo honesto no espero que esto se pueda lograr en SQL sin embargo, cualquier otra columna que se pueda hacer en SQL que estoy seguro si se puede, solo no se como, seria de gran ayuda.

Debo declarar que NO PUEDO MODIFICAR la base de datos, esto se debe a que esta es administrada por la compañia que nos provee el punto de venta, y solo podemos consultarla.

Estoy algo desesperado, cualquiera que quisiera auxiliar es bienvenido, acepto concejos de como deberia aproximar a estas columnas personalisadas, eh intentado "CASE ()" tras "CASE()" y realmente nada me ah funcionado.

En la imagen esta la formula que uso en excel, y un escrito en español de lo que hace el proceso.

Gracias.


07 de Marzo del 2019

ugh... me salio todo como formato en codigo, ni modo =.=